/********************************************************************
 * PROJECT: FOLIAGE PROJECT.
 * SUPPLIER: FOLIAGE TEAM.
 ********************************************************************
 * FILE: Task.java
 * (C) Copyright Foliage Team 2013, All Rights Reserved.
 ********************************************************************/
package org.foliage.common.structure;

import java.util.Calendar;

/**
 * 任务对象接口，定义获取开始时间和结束时间等基本方法。
 * 
 * @author deathknight0718@gmail.com
 * @version 1.0.0
 */
public interface Task {

	final static int FRONT = 1;

	final static int OVERLAPPING = 0;

	final static int FOLLOWING = -1;

	/**
	 * 获取任务名称。
	 * 
	 * @return 任务名称。
	 */
	String getTaskName();

	/**
	 * 获取任务的开始时间。
	 * 
	 * @return 任务开始时间。
	 */
	Calendar getBeginCalendar();

	/**
	 * 获取任务的结束时间。
	 * 
	 * @return 任务结束时间。
	 */
	Calendar getEndCalendar();

	/**
	 * 获取相邻的前置任务实例。
	 * 
	 * @return 前置任务实例。
	 */
	Task getFrontTask();

	/**
	 * 获取相邻的后置任务实例。
	 * 
	 * @return 后置任务实例。
	 */
	Task getFollowingTask();

	/**
	 * 与指定的任务实例比较时间位置。
	 * 
	 * @param task 任务实例。
	 * @return 比较结果。
	 */
	int compareTo(Task task);

}
